import tkinter as tk

def yanghui(n): #创造杨辉三角
    if n==0:  #特殊情况
        return [1]
    if n==1:
        return[[1][1]]
    n-=2
    ans=[[1],[1,1]]
    while n>=0:
        nl=[1]
        for i in range(len(ans[-1])-1):
            nl.append(ans[-1][i]+ans[-1][i+1])
        nl.append(1)
        ans.append(nl)
        n-=1
    ans.insert(0,[1])
    return ans

top = tk.Tk()
top.title('|YANGHUI|')
top.resizable(True, False)
n=20
L=yanghui(n-1)#从0开始计算,所以需要-1
frame=[]
for i in range(0,n):
    frame1 = tk.Frame(top)
    frame1.pack(side = tk.TOP, fill = tk.X)
    frame.append(frame1)
for i in range(1,len(L)):
    for j in range(0,len(L[i])):
        c=str(L[i][j])
        w=len(str(L[-1][len(L[-1])//2])) #就算n=100也可以计算出合适的width(最后一行的中间数的位数)
        label=tk.Label(frame[i-1],width=w,text=c,relief=tk.GROOVE)#GROOVE,外凸样式，详见附录１
        label.pack(side=tk.LEFT,ipadx=1)
lowerframe = tk.Frame(top)
lowerframe.pack(side = tk.BOTTOM,fill=tk.X)
label1= tk.Label(lowerframe,text="|YANGHUI|0.0.1 Powered By ＠King_haoqi")
label1.pack(side=tk.BOTTOM)
top.mainloop()
'''
附录1.
relief样式
FLAT 无样式
GROOVE 高亮
RAISED 外凸
RIDGE 半凹半凸
SOLID 框线
SUNKEN 内凹
'''